//    Copyright (C) Kherty.  All rights reserved.
using System;
using System.Windows;

namespace OpenLS.Core
{
    public static class PaperSizeToSizeConverter
    {
        public static Size GetSize(PaperSize size, Orientation orientation)
        {
            Size result = GetSize(size);
            if (orientation == Orientation.Landscape)
                result = new Size(result.Height, result.Width);
            return result;
        }
        public static Size GetSize(PaperSize size)
        {
            switch (size)
            {

                case PaperSize.Letter: return new Size(816, 1056);
                case PaperSize.LetterSmall: return new Size(816, 1056);
                case PaperSize.Tabloid: return new Size(1056, 1632);
                case PaperSize.Ledger: return new Size(1632, 1056);
                case PaperSize.Legal: return new Size(816, 1344);
                case PaperSize.Statement: return new Size(528, 816);
                case PaperSize.Executive: return new Size(696, 1008);
                case PaperSize.A3: return new Size(1122.26666666667, 1587.86666666667);
                case PaperSize.A4: return new Size(793.933333333333, 1122.26666666667);
                case PaperSize.A4Small: return new Size(793.8, 1122.6);
                case PaperSize.A5: return new Size(559.4, 793.8);
                case PaperSize.B4: return new Size(971.466666666667, 1375.93333333333);
                case PaperSize.B5: return new Size(688.333333333333, 971.533333333333);
                case PaperSize.Folio: return new Size(816, 1248);
                case PaperSize.Quatro: return new Size(813.133333333333, 1039.66666666667);
                case PaperSize.Standard10x14: return new Size(960, 1344);
                case PaperSize.Standard11x17: return new Size(1056, 1632);
                case PaperSize.Note: return new Size(816, 1056);
                case PaperSize.EnvelopeNumber9: return new Size(372.466666666667, 852.466666666667);
                case PaperSize.EnvelopeNumber10: return new Size(396.466666666667, 912);
                case PaperSize.EnvelopeNumber11: return new Size(432, 996.466666666667);
                case PaperSize.EvvelopeNumber12: return new Size(456, 1056);
                case PaperSize.EvvelopeNumber14: return new Size(480, 1104);
                case PaperSize.CSizeSheet: return new Size(1632, 2112);
                case PaperSize.DSizeSheet: return new Size(2090, 3230);
                case PaperSize.ESizeSheet: return new Size(2185, 4180);
                case PaperSize.EnvelopeDL: return new Size(415.666666666667, 831.333333333333);
                case PaperSize.EnvelopeC5: return new Size(612.466666666667, 865.933333333333);
                case PaperSize.EnvelopeC3: return new Size(1224.93333333333, 1730.86666666667);
                case PaperSize.EnvelopeC4: return new Size(865.933333333333, 1224.93333333333);
                case PaperSize.EnvelopeC6: return new Size(431.066666666667, 612.466666666667);
                case PaperSize.EnvelopeC65: return new Size(431.066666666667, 865.933333333333);
                case PaperSize.EnvelopeB4: return new Size(944.666666666667, 1334.4);
                case PaperSize.EnvelopeB5: return new Size(665.266666666667, 944.666666666667);
                case PaperSize.EnvelopeB6: return new Size(665.266666666667, 472.333333333333);
                case PaperSize.Envelope: return new Size(415.666666666667, 869.733333333333);
                case PaperSize.EnvelopeMonarch: return new Size(372.466666666667, 720);
                case PaperSize.SixThreeQuartersEnvelope: return new Size(348.466666666667, 624);
                case PaperSize.UsStandardFanfold: return new Size(1428.46666666667, 1056);
                case PaperSize.GermanStandardFanfold: return new Size(816, 1152);
                case PaperSize.GermanLegalFanfold: return new Size(816, 1248);
                case PaperSize.B4ISO: return new Size(944.666666666667, 1334.4);
                case PaperSize.JapanesePostcard: return new Size(378.266666666667, 559.666666666667);
                case PaperSize.Standard9x11: return new Size(864, 1056);
                case PaperSize.Standard10x11: return new Size(960, 1056);
                case PaperSize.Standard15x11: return new Size(1440, 1056);
                case PaperSize.EnvelopeInvite: return new Size(831.333333333333, 831.333333333333);
                case PaperSize.reverved: return new Size(-1, -1);
                case PaperSize.reserved: return new Size(-1, -1);
                case PaperSize.LetterExtra: return new Size(912, 1152);
                case PaperSize.LegalExtra: return new Size(912, 1440);
                case PaperSize.TabloidExtra: return new Size(1110.55, 1710);
                case PaperSize.A4Extra: return new Size(889.933333333333, 1218.26666666667);
                case PaperSize.LetterTransverse: return new Size(816, 1056);
                case PaperSize.A4Transverse: return new Size(793.933333333333, 1122.26666666667);
                case PaperSize.LetterExtraTransverse: return new Size(912, 1152);
                case PaperSize.SuperA: return new Size(858.266666666667, 1345.93333333333);
                case PaperSize.SuperB: return new Size(1152.93333333333, 1841.26666666667);
                case PaperSize.LetterPlus: return new Size(816, 1218.26666666667);
                case PaperSize.A4Plus: return new Size(793.933333333333, 1247.06666666667);
                case PaperSize.A5Transverse: return new Size(559.666666666667, 793.933333333333);
                case PaperSize.B5JisTransverse: return new Size(688.333333333333, 971.533333333333);
                case PaperSize.A3Extra: return new Size(1217.26666666667, 1681.93333333333);
                case PaperSize.A5Extra: return new Size(657.6, 888);
                case PaperSize.A2: return new Size(1587.40157480315, 2245.03937007874);
                case PaperSize.B5IsoExtra: return new Size(759.333333333333, 1043.53333333333);
                case PaperSize.A3Transverse: return new Size(1122.26666666667, 1587.86666666667);
                case PaperSize.A3ExtraTransverse: return new Size(1217.26666666667, 1681.93333333333);
                case PaperSize.JapaneseDoublePostcard: return new Size(756.466666666667, 559.666666666667);
                case PaperSize.A6: return new Size(396.466666666667, 559.666666666667);
                case PaperSize.JapaneseEnvelopeKakuNumber6: return new Size(907.2, 1254.73333333333);
                case PaperSize.JapaneseEnvelopeKakuNumber3: return new Size(816, 1047.33333333333);
                case PaperSize.JapaneseEnvelopeChouNumber3: return new Size(454.066666666667, 888);
                case PaperSize.JapaneseEnvelopeChouNumber4: return new Size(339.866666666667, 774.733333333333);
                case PaperSize.LetterRotated: return new Size(1056, 816);
                case PaperSize.A3Rotated: return new Size(1587.86666666667, 1122.26666666667);
                case PaperSize.A4Rotated: return new Size(1122.26666666667, 793.933333333333);
                case PaperSize.A5Rotated: return new Size(793.933333333333, 559.666666666667);
                case PaperSize.B4JisRotated: return new Size(1375.66666666667, 971.533333333333);
                case PaperSize.B5JisRotated: return new Size(971.533333333333, 688.333333333333);
                case PaperSize.JapanesePostcardRotated: return new Size(559.666666666667, 378.266666666667);
                case PaperSize.DoubleJapanesePostcardRotated: return new Size(559.666666666667, 756.466666666667);
                case PaperSize.A6Rotated: return new Size(559.666666666667, 396.466666666667);
                case PaperSize.JapaneseKakuNumber2Rotated: return new Size(1254.73333333333, 907.2);
                case PaperSize.JapaneseKakuNumber3Rotated: return new Size(1047.33333333333, 816);
                case PaperSize.JapaneseChouNumber3Rotated: return new Size(888, 454.066666666667);
                case PaperSize.JapaneseChouNumber4Rotated: return new Size(774.733333333333, 339.866666666667);
                case PaperSize.B6Jis: return new Size(483.866666666667, 688.333333333333);
                case PaperSize.B6JisRotated: return new Size(688.333333333333, 483.866666666667);
                case PaperSize._12x11: return new Size(1152.93333333333, 1056.93333333333);
                case PaperSize.JapaneseEnvelopeYouNumber4: return new Size(396.466666666667, 888);
                case PaperSize.JapaneseEnvelopeYouNumber4Rotated: return new Size(888, 396.466666666667);
                case PaperSize.P16K: return new Size(551.811023622047, 812.59842519685);
                case PaperSize.P32K: return new Size(366.614173228346, 570.708661417323);
                case PaperSize.P32KBig: return new Size(366.614173228346, 570.708661417323);
                case PaperSize.PRCEnvelopeNumber1: return new Size(385.933333333333, 624);
                case PaperSize.PRCEnvelopeNumber2: return new Size(385.511811023622, 665.196850393701);
                case PaperSize.PRCEnvelopeNumber3: return new Size(472.333333333333, 665.266666666667);
                case PaperSize.PRCEnvelopeNumber4: return new Size(415.666666666667, 786.266666666667);
                case PaperSize.PRCEnvelopeNumber5: return new Size(415.666666666667, 831.333333333333);
                case PaperSize.PRCEnvelopeNumber6: return new Size(454.066666666667, 869.733333333333);
                case PaperSize.PRCEnvelopeNumber7: return new Size(604.8, 869.733333333333);
                case PaperSize.PRCEnvelopeNumber8: return new Size(454.066666666667, 1168.33333333333);
                case PaperSize.PRCEnvelopeNumber9: return new Size(865.933333333333, 1224.93333333333);
                case PaperSize.PRCEnvelopeNumber10: return new Size(1224.93333333333, 1730.86666666667);
                case PaperSize.P16KRotated: return new Size(812.59842519685, 551.811023622047);
                case PaperSize.P32KRotated: return new Size(570.708661417323, 366.614173228346);
                case PaperSize.P32KBigRotated: return new Size(570.708661417323, 366.614173228346);
                case PaperSize.PRCEnvelopeNumber1Rotated: return new Size(624, 385.933333333333);
                case PaperSize.PRCEnvelopeNumber2Rotated: return new Size(665.196850393701, 385.511811023622);
                case PaperSize.PRCEnvelopeNumber3Rotated: return new Size(665.266666666667, 472.333333333333);
                case PaperSize.PRCEnvelopeNumber4Rotated: return new Size(786.266666666667, 415.666666666667);
                case PaperSize.PRCEnvelopeNumber5Rotated: return new Size(831.333333333333, 415.666666666667);
                case PaperSize.PRCEnvelopeNumber6Rotated: return new Size(869.733333333333, 454.066666666667);
                case PaperSize.PRCEnvelopeNumber7Rotated: return new Size(869.733333333333, 604.8);
                case PaperSize.PRCEnvelopeNumber8Rotated: return new Size(1168.33333333333, 454.066666666667);
                case PaperSize.PRCEnvelopeNumber9Rotated: return new Size(1224.93333333333, 865.933333333333);

            }
            throw new NotSupportedException(size.ToString());
        }
    }
}